#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
#include <semaphore.h>
#include <string.h>
#include <page_manager.h>


static struct PageAction *g_Pages = NULL; // 管理所有页面的链表
static struct PageAction *g_Default = NULL; // 默认页面


// 注册单个PageAction到设备链表中
void RegisterPageAction(PageAction *ptPageAction)
{
    ptPageAction->ptNext = g_Pages;
    g_Pages = ptPageAction; // 这里一定要用指针否则会出现段错误！
}


// 注册所有PageAction结构体变量
void RegisterAllPages(void)
{
    extern void RegisterMPtoAllPages(void);
    RegisterMPtoAllPages();
}


// 选择默认页面并返回默认页面结构体
PageAction ChooseAndGetDefaultPage(char *name)
{
	PPageAction pTmp = g_Pages;
    // 遍历链表
    while (pTmp)
    {   
        #if 0
        if (pTmp->name == NULL) 
        {
            printf("Error: pTmp->name is NULL\n");
        }
        if (name == NULL) 
        {
            printf("Error: name is NULL\n");
        }
        #endif

        // 如果找到了
        if (strcmp(pTmp->name, name) == 0)
        {   
            // 返回默认页面
            g_Default = pTmp;
            return *g_Default;
        }
        // 没找到则遍历下一个
        pTmp = pTmp->ptNext;
    }
    // 遍历整个链表仍找不到
    return (PageAction){0}; // 返回空结构体
}

